package co.saep.vista;

import co.edu.senaclem.logica.co;
import co.edu.senaclem.logica.LogicaEmpresaLocal;
import co.edu.senaclem.modelo.Coformador;
import co.edu.senaclem.modelo.Empresa;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import org.primefaces.component.commandbutton.CommandButton;
import org.primefaces.component.inputtext.InputText;
import org.primefaces.event.SelectEvent;

@ManagedBean(name = "coformadorVista")
@RequestScoped
public class coformadorVista {

    @EJB
    private LogicaCoformadorLocal logicaCoformador;
    @EJB
    private LogicaEmpresaLocal logicaEmpresa;

    private InputText txtDocCoformador;
    private InputText txtNomCoformador;
    private InputText txtTelCoformador;
    private InputText txtNumEmpresa;
    private CommandButton btnRegistrar;
    private CommandButton btnEliminar;
    private CommandButton btnModificar;
    private CommandButton btnLimpiar;
    private CommandButton btnEmpresas;
    private List<Coformador> listaCoformador;
    private List<Empresa> listaEmpresas;
    private Coformador selectCoformador;
    private Empresa selectEmpresa;

    public Empresa getSelectEmpresa() {
        return selectEmpresa;
    }

    public void setSelectEmpresa(Empresa selectEmpresa) {
        this.selectEmpresa = selectEmpresa;
    }

    public List<Empresa> getListaEmpresas() {
        if (listaEmpresas == null) {
            try {
                listaEmpresas = logicaEmpresa.consultarEmpresa();
            } catch (Exception ex) {
                Logger.getLogger(coformadorVista.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return listaEmpresas;
    }

    public void setListaEmpresas(List<Empresa> listaEmpresas) {
        this.listaEmpresas = listaEmpresas;
    }

    public coformadorVista() {

    }

    public InputText getTxtDocCoformador() {
        return txtDocCoformador;
    }

    public void setTxtDocCoformador(InputText txtDocCoformador) {
        this.txtDocCoformador = txtDocCoformador;
    }

    public InputText getTxtNomCoformador() {
        return txtNomCoformador;
    }

    public void setTxtNomCoformador(InputText txtNomCoformador) {
        this.txtNomCoformador = txtNomCoformador;
    }

    public InputText getTxtTelCoformador() {
        return txtTelCoformador;
    }

    public void setTxtTelCoformador(InputText txtTelCoformador) {
        this.txtTelCoformador = txtTelCoformador;
    }

    public InputText getTxtNumEmpresa() {
        return txtNumEmpresa;
    }

    public void setTxtNumEmpresa(InputText txtNumEmpresa) {
        this.txtNumEmpresa = txtNumEmpresa;
    }

    public CommandButton getBtnRegistrar() {
        return btnRegistrar;
    }

    public void setBtnRegistrar(CommandButton btnRegistrar) {
        this.btnRegistrar = btnRegistrar;
    }

    public CommandButton getBtnEliminar() {
        return btnEliminar;
    }

    public void setBtnEliminar(CommandButton btnEliminar) {
        this.btnEliminar = btnEliminar;
    }

    public CommandButton getBtnModificar() {
        return btnModificar;
    }

    public void setBtnModificar(CommandButton btnModificar) {
        this.btnModificar = btnModificar;
    }

    public CommandButton getBtnLimpiar() {
        return btnLimpiar;
    }

    public void setBtnLimpiar(CommandButton btnLimpiar) {
        this.btnLimpiar = btnLimpiar;
    }

    public CommandButton getBtnEmpresas() {
        return btnEmpresas;
    }

    public void setBtnEmpresas(CommandButton btnEmpresas) {
        this.btnEmpresas = btnEmpresas;
    }

    public List<Coformador> getListaCoformador() {
        if (listaCoformador == null) {
            try {
                listaCoformador = logicaCoformador.consultarCoformador();
            } catch (Exception ex) {
                Logger.getLogger(coformadorVista.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return listaCoformador;
    }

    public void setListaCoformador(List<Coformador> listaCoformador) {
        this.listaCoformador = listaCoformador;
    }

    public Coformador getSelectCoformador() {
        return selectCoformador;
    }

    public void setSelectCoformador(Coformador selectCoformador) {
        this.selectCoformador = selectCoformador;
    }

    public void funcion_limpiar() {
        txtDocCoformador.setValue("");
        txtNomCoformador.setValue("");
        txtTelCoformador.setValue("");
        txtNumEmpresa.setValue("");
        txtDocCoformador.setDisabled(false);
        btnRegistrar.setDisabled(false);
        btnModificar.setDisabled(true);
        btnEliminar.setDisabled(true);
    }

    public void funcion_registrar() {
        try {
            Coformador cof = new Coformador();
            cof.setDocumentocoformador(Long.parseLong(txtDocCoformador.getValue().toString()));
            cof.setNombrecoformador(txtNomCoformador.getValue().toString());
            cof.setTelefonocoformador(txtTelCoformador.getValue().toString());
            // Para consultar en foraneas
            Empresa consultarPorNumero = logicaEmpresa.consultarPorNumero(Long.parseLong(txtNumEmpresa.getValue().toString()));
            cof.setNumeroempresa(consultarPorNumero);
            logicaCoformador.registrarCoformador(cof);
            FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage(FacesMessage.SEVERITY_INFO, "Informacion", "El coformador  se ha registrado con exito"));
        } catch (Exception ex) {
            FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error", ex.getMessage()));
            Logger.getLogger(coformadorVista.class.getName()).log(Level.SEVERE, null, ex);

        }
        listaCoformador = null;

    }

    public void funcion_modificar() {
        try {
            Coformador cof = new Coformador();
            cof.setDocumentocoformador(Long.parseLong(txtDocCoformador.getValue().toString()));
            cof.setNombrecoformador(txtNomCoformador.getValue().toString());
            cof.setTelefonocoformador(txtTelCoformador.getValue().toString());
            Empresa emp = logicaEmpresa.consultarPorNumero(Long.parseLong(txtNumEmpresa.getValue().toString()));
            cof.setNumeroempresa(emp);
            logicaCoformador.modificarCoformador(cof);
            FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage(FacesMessage.SEVERITY_INFO, "Informacion", "El coformador  se ha modificado con exito"));
        } catch (Exception ex) {
            Logger.getLogger(coformadorVista.class.getName()).log(Level.SEVERE, null, ex);
            FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error", ex.getMessage()));
        }
        listaCoformador = null;
        funcion_limpiar();;
    }

    public void funcion_eliminar() {
        try {
            Coformador cof = new Coformador();
            cof.setDocumentocoformador(Long.parseLong(txtDocCoformador.getValue().toString()));
            logicaCoformador.eliminarCoformador(cof);
            FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage(FacesMessage.SEVERITY_INFO, "Informacion", "El coformador  se ha eliminado con exito"));
        } catch (Exception ex) {
            Logger.getLogger(coformadorVista.class.getName()).log(Level.SEVERE, null, ex);
            FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error", ex.getMessage()));
        }
        listaCoformador = null;
        funcion_limpiar();
    }

    public void funcion_seleccionar(SelectEvent event) {
        Coformador cofSeleccionado = (Coformador) event.getObject();
        txtDocCoformador.setValue(cofSeleccionado.getDocumentocoformador());
        txtNomCoformador.setValue(cofSeleccionado.getNombrecoformador());
        txtTelCoformador.setValue(cofSeleccionado.getTelefonocoformador());
        txtNumEmpresa.setValue(cofSeleccionado.getNumeroempresa().getNumeroempresa());
        txtDocCoformador.setDisabled(true);
        btnRegistrar.setDisabled(true);
        btnModificar.setDisabled(false);
        btnEliminar.setDisabled(false);
    }

    public void funcion_selectEmpresa(SelectEvent event) {
        Empresa empSeleccionada = (Empresa) event.getObject();
        txtNumEmpresa.setValue(empSeleccionada.getNumeroempresa());
        txtNumEmpresa.setDisabled(true);
             
    }
}
